#ifndef __ERROR_H
#define __ERROR_H

extern char error[];

/**
 * @brief errors 的数量（不能超过 8 个）
 */
extern unsigned char errs;
extern char          errors[][64];

/**
 * @brief 清除错误标志
 */
#define error_clean() error[0] = '\0'
#define errors_clean()                                        \
        do {                                                  \
                errs = 0;                                     \
                for (int __tmp_i = 0; __tmp_i < 8; ++__tmp_i) \
                        errors[__tmp_i][0] = '\0';            \
        } while (0)

/**
 * @brief 查看是否有错误标志
 */
#define ERROR_HAVED (error[0] != '\0')

/**
 * @brief 将错误现场的文本提示复制到 error 中
 * @param scene 错误现场的文本
 */
extern void error_save(const char *scene);

#endif
